C++重载操作符的函数必须是友元函数或者成员函数吗?别喷我,我菜鸟

[复制链接]
查看11 | 回复3 | 2013-1-25 05:10:06 | 显示全部楼层 |阅读模式
并非必须……但如果不是友元函数或者成员函数,就不能访问类的私有成员……追问还想问一个问题,C++也要像C一样用链表吗?就是做一个存一些信息的 回答不明白你什么意思……C++标准库里本身就有定义了链表的头文件,如果你需要的话完全可以用…… 赞同0|评论
回复

使用道具 举报

千问 | 2013-1-25 05:10:06 | 显示全部楼层
楼主你好,是可以的当然, 如果不是友元 和 成员函数,就不能访问类的私有数据了除非你将某些数据定义成了共有成员(但是这样就不符合数据隐藏了)举个例子:class Time{public:
int k;
Time() {k=1;}} int operator (Time return a.k;}int main(){
Time test;
int a = test2;
cout a;
这里会输出2的}程序员一般不会如此操作, 因为 这违反了 类设计的 初衷。C++规定:.重载后的运算符至少有一个操作数是用户自己定义的类型。这是为了防止用户为标准类型重载运算符。因此,不能将-减号运算符重载为两个double变量的和。 在C++中有什么是用户自己定义的类型呢?一是类, 二是结构体, 第三种勉强能算上的是枚举enum 下面这四个运算符 只能通过成员函数重载, 剩余的运算符都可以通过成员或非成员函数重载。=: 赋值运算符():函数调用运算符[]:下标运算符-:通过指针访问类成员的运算符。追问再弱弱的问一下。C++有什么可以替代C里面的链表吗?还有链表的节点大小必须是固定的吗?意思是假如有一个string类的结构(类)可以作为链表的节点吗? 回答1.链表不是属于C语言的,它只是一种数据结构,任何可以使用指针的语言都可以使用。而且链表
使用方便功能强大,标准库很多容器都是以链表为基础实现的。 C++中的容器封装了 多种数据结构, 可以直接用来使用的 STL中的list是一个带头结点的双向链表(而且还是循环的~~~但是循环功能只能用于反向迭代器,
而且对用户是透明的).2. 链表的结点是自己定义的,大小随着自己定义的数据类型而变化3.可以啊, 链表: struct String{
stringXXXX;
String * next;
} 赞同0|评论
回复

使用道具 举报

千问 | 2013-1-25 05:10:06 | 显示全部楼层
面向对象,封装,不重载成成员函数或者友元,怎么体现赞同0|评论
回复

使用道具 举报

千问 | 2013-1-25 05:10:06 | 显示全部楼层
问百度去赞同0|评论
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行