关于C++中this指针-创新互联

【本博客中关于C++和QT,无特别说明开发环境为:Visual studio 2013,QT为5.9.9,特此说明,谨慎参考,希望能帮助到爱好者!】

创新互联专注于企业成都全网营销推广、网站重做改版、连江网站定制设计、自适应品牌网站建设、html5商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为连江等各大城市提供网站开发制作服务。

【提醒:c++中关于.和->区别,都是用于成员选择,基于.表示对象名称选择成员,->表示对象指针选择成员。】

c++变量的作用域:如果函数形参跟类的内部的变量重名,在函数内部,c++会仍然使用函数形参如下例子:

#includeusing namespace std;
class Teacher{
	private:
		char *tea_name;
		int tea_age;
		char *tea_address;
	public:
		void setName(char *tea_name);
		void setAge(int tea_age);
		Teacher(char *name,int age,char *address);//声明构造函数
		void display();//声明普通函数

};
Teacher::Teacher(char *name,int age,char *address){
	tea_name=name;
	tea_age=age;
	tea_address=address;
}
void Teacher::setAge(int tea_age){
	tea_age=tea_age;
}
void Teacher::setName(char *tea_name){
	tea_name=tea_name;
}
void Teacher::display(){
	cout<<"姓名:"<setName("周明");
	t->setAge(20);
	t->display();
	return 0;
}

结果是:

姓名:张三
年龄:34
地址:北京市海淀区
姓名:黄亮
年龄:46
地址:河南省

下面调整后:

#includeusing namespace std;
class Teacher{
	private:
		char *tea_name;
		int tea_age;
		char *tea_address;
	public:
		void setName(char *tea_name);
		void setAge(int tea_age);
		Teacher(char *name,int age,char *address);//声明构造函数
		void display();//声明普通函数

};
Teacher::Teacher(char *name,int age,char *address){
	tea_name=name;
	tea_age=age;
	tea_address=address;
}
void Teacher::setAge(int tea_age){
	this->tea_age=tea_age;
}
void Teacher::setName(char *tea_name){
	this->tea_name=tea_name;
}
void Teacher::display(){
	cout<<"姓名:"<setName("周明");
	t->setAge(20);
	t->display();
	return 0;
}

输出结果正确了!

类的外部定义成员函数时必须同时提供类名和函数名。在类的内部定义的成员函数不需要提供类名,成员函数内部调用类定义的变量和类型,无需提供类名。

1、类作用域中,类的非静态成员函数可以直接访问类的其他任何成员。
2、在类作用域外,只能通过类的对象、指针、引用访问类成员,此时类成员转变成了对象成员。
3、类中成员函数定义的局部变量具有程序块作用域,如果有重名,作用域内层的会遮蔽作用域外层的。
4、想要访问重名的作用域相同的函数或变量,可以使用this指针和二元运算符作用域解析符(::)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:关于C++中this指针-创新互联
标题网址:http://ybzwz.com/article/cccish.html