C++ 构造器
来源:互联网 发布:原生js图片上传 编辑:程序博客网 时间:2024/06/05 08:12
C++构造函数称为构造器。构造器必须是公有的,若是私有的,编译会报错,因为在用户编写了构造函数后,编译器就不会再默认的构造函数初始化对象,而是用用户编写的构造器初始化对象,若用户编写的构造器为私有的,便会出现错误。
1.构造器是public的
2.构造器可以为内嵌函数
3.构造器可重载
4.构造器无返回值
5.构造器名和类名必须一致
6..在类中声明构造器,类外定义构造器格式:类名::类名(参数列表){}
eg1:
class point{
private:
int x,y;
public :
point(int x,int y){this->x=x;this->y=y;}
};
point n(1,2);//初始化n对象
n=point(3,4);//为n对象赋值
point *p=point(3,5);//new一个对象,并把对象地址赋值给p指针
point ss=point(3,5);//正确
point s;//错误,编译器调用point(x,x)构造器发现有两个参数,而用户并没有传递参数,造成错误。
若定义了构造器,之声明一个对象无初始化便会报错,eg point n;报错除非定义在无参数的构造函数。。
比如:eg2:
class point{
private:
int x,y;
public :
point(int x,int y){this->x=x;this->y=y;}
point(){this->x=0;this->y=0;}
};
point s;//正确,编译器调用point()构造器,构造s对象
point n(2,3);//正确,编译器调用point(x,y)构造器
eg3:
class point{
private:
int x,y;
};
point s;//正确,编译器会自动提供一个默认构造器,构造s对象
C++98不支持在初始化对象以及调用构造器时用{}代替(),:point n{1,3}; point pp=point{3,4}; C++98也不支持point po={3,2};这几个方式 符合c++0x规范,若编译器 支持c++0x规范即可通过编译。
c++0x有一个代理构造器:
class point{
private:
int x,y;
public :
point(int x,int y){this->x=x;this->y=y;}
point():point(0,0){}//代理构造器
};
其中point():point(0,0){}声明了一个默认构造器point(),但它把工作转交给了另一个构造器:它调用了那个有两个参数的构造器并把输入参数值(0,0)传递给了后者。这是c++0x规范,这里不再做讨论。
- 构造器(C#)
- Object-C 便利构造器
- 【c++】构造器与析构器
- 【C++】构造器和析构器
- C#实例构造器,类型构造器 -笔记
- C#_构造器、属性、索引器
- Objective-C---2---初始化、便利构造器
- C++(笔记)类、构造器基础
- 构造数据类型(C++)
- 构造Pythonic C module
- 【C++】拷贝构造函数
- C#:静态构造函数
- C++:拷贝构造函数
- explicit构造函数(C++)
- C++:关于构造函数
- C++-构造函数
- C++String构造函数
- c++-转换构造函数
- offsetof' was not declared in this scope
- 100+ 超全的web开发工具和资源
- coyote
- Pascal's Triangle
- Android点击事件的三种写法
- C++ 构造器
- 第十六周项目一 a阅读程序(1)
- js 输出html的表格数据到 excel
- 用Qt 调用GDB调试 Arm程序 详细步骤----可单步执行每一行
- HTML页面为什么设置了UTF-8仍然中文乱码
- TCP 的那些事儿(下)
- 【Java学习-J.160601.0.20】Servlet 基础三 dao的封装
- ssh client algorithm negotiation failed
- 基音周期估计