c++构造函数的定义
文章目录
- 前言
- 一、构造函数
- 二、拷贝构造函数
- 总结
前言
构造函数的定义方式以及拷贝构造函数
一、构造函数
#include <iostream>
using namespace std;
class student
{public:int ag;string nam;student(int age, string name){ag=age;nam=name;}
};//没加分号,记录丢人瞬间
以上是在类的内部以及构造函数内部初始化student类的对象的一些成员变量
#include <iostream>
#include <string>
using namespace std;
class student
{public:int ag;int nam;student(int age, int name);
};student::student(int age, int name):ag(age),nam(name)
{cout << "构造函数的参数化列表" << endl;
}
以上是构造函数在类的外部定义以及使用参数化列表的形式给创建的对象的一些成员变量赋值
二、拷贝构造函数
什么时候会用到拷贝构造函数呢?当我们用一个对象给另外一个对象进行赋值的时候。
此时拷贝构造函数分为两种类型:一种是浅拷贝,另一种是深拷贝
如果我们不声明拷贝构造函数,那么编译器自己执行的拷贝构造函数是浅拷贝,但是浅拷贝只适用于类中没有动态数据成员的情况,当类里面有动态数据成员时就要使用深度拷贝。
#include<iostream>
using namespace std;
class A
{public:int a;A(int b){a = b;cout << "有参构造" << endl;}A(){cout<<"无参构造"<<endl;}A(const A &B){a = B.a;cout<< "拷贝" << endl;}void fun(){int x; }
};
void test()
{A x;//无参构造不能使用括号,会被编译器认为是函数声明A y(2);//括号调用有参构造A z(y);//括号调用拷贝构造函数
}
int main()
{test();return 0;
}
总结
定义类的时候最后没加分号,编译器疯狂报错,“丢人”
c++构造函数的定义相关推荐
- 使用原型相对于直接在构造函数中定义方法的优势? [重复]
本文翻译自:Advantages of using prototype, vs defining methods straight in the constructor? [duplicate] Th ...
- scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?
在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员? 例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据 ...
- JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)
作为其他变量的值 <!DOCTYPE html> <html lang="zh"><head><meta charset="UT ...
- java抽象类的构造函数如何定义_我们可以在Java的抽象类中定义参数化的构造函数吗?...
是的,我们可以在抽象类中定义参数化的构造函数. 在抽象类中定义参数化构造函数的条件我们需要确保扩展抽象类的类具有构造函数,并且可以调用超类参数化构造函数. 我们可以通过使用super()调用在子类中调 ...
- PHP调用类函数定义位置,OOP PHP – 如何有选择地调用类的构造函数中定义的特定方法?...
我正在学习用OOP方式编写Wordpress Multisite,因为我现在对OOP很新,我现在处于一种我似乎无法自己解决的问题. 具体来说,我正在创建一些类来使用OOP方法创建管理页面(在网络和子网 ...
- 构造函数,定义一个网络用户类,信息有用户 ID、用户密码、 email 地址
题目: * 定义一个网络用户类,信息有用户 ID.用户密码. email 地址. * 在建立类的实例时把以上三个信息都作为构造函数的参数输入, * 其中用户 ID 和用户密码时必须缺省时 * ...
- java scanner类 构造器_java – 不能使用Scanner类,构造函数未定义,方法未定义
问题是你还要声明一个名为Scanner的类.这意味着当你然后声明一个Scanner类型的变量并尝试调用构造函数时,编译器会认为你在谈论你的类.只需将您自己的类更改为其他类(例如Test): impor ...
- javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
1.把方法写在原型中比写在构造函数中消耗的内存更小,因为在内存中一个类的原型只有一个,写在原型中的行为可以被所有实例共享,实例化的时候并不会在实例的内存中再复制一份 而写在类中的方法,实例化的时候会在 ...
- javascript构造函数类和原型prototype定义的属性和方法的区别
1.把方法写在原型中比写在构造函数中消耗的内存更小,因为在内存中一个类的原型只有一个,写在原型中的行为可以被所有实例共享, 实例化的时候并不会在实例的内存中再复制一份 而写在类中的方法,实例化的时候会 ...
最新文章
- 2018/12/05 PAT刷题 L1-018 大笨钟 Java
- three.js 加载显示文字
- python的cfg是什么模块_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
- Appfuse:记录操作日志
- 利用pip3安装包只能在python2中调用
- python爬虫知识_Python 爬虫技术分享
- Linux字体大小颜色,Linux技巧:自定义Gnome面板字体和颜色
- 荒岛求生游戏显示服务器不行,《荒岛求生》黑屏解决方法
- 什么是数据的完整性约束
- 深入探究JFreeChart
- 新浪研发中心: Berkeley DB 使用经验总结
- jQuery表单插件ajaxForm,ajaxSubmit使用详解
- ad09只在一定范围内查找相似对象_AD16中filter查找相似对象list inspector四大编辑指令使用方法...
- 【Materials Studio学习六】构建固液表面
- IPA 包不经过APP Store直接发布到网站供用户下载安装
- VCPKG安装opencv后VS2019无法找到viz.hpp
- 大厂面试必备之消息队列连环问
- Android 8.0(Android O) AccountManager 行为变更
- vue axios 下载zip 解压报错 responseType blob arraybuffer
- apfs扩容_向 APFS 文件系统转进:iOS 10.3 为 iPhone 变相扩容存储空间