C++入门篇六
struct和class的访问权限:结构体,类
struct和class 是相同的,唯一的而不同,就是默认权限,struct是public,class默认是private
class Animal {
public://如果不申明权限,默认是私有权限
char name[];
void eat() {
cout << "age:" << name << endl;
}
};
struct Person1 {
char name[];
void eat() {
cout << "name:" << name << "吃饭" << endl;
}
};
void test() {
Person1 p1;
p1.name;//struct默认是共有的权限
Animal A1;
A1.name;//不能访问,class默认是私有的权限
}
protected:保护权限,类内部(不包括继承的子类)是可以访问(属性和方法),类外部是不可以访问的
public公有权限:类的外部和内部都可以访问类里面的属性和方法
private:类内部(包括继承的子类)才可以访问,外部不可以访问
#include "pch.h"
using namespace std;
#include <iostream> #include <string>
//访问权限
class Person2 {
public:
void setage(int n) {
if (n < or n>) {
cout << "不符合" << endl;
return;
}
age = ;
}; int getage() {
return age;
}
string getname() {
return name;
} private:
int age;
string name;
int money;
}; void test02() { Person2 p1;
p1.setage();
age=p1.getage;
name=p1.getname();
};
int main() {
test02();
}
构造函数和析构函数:
构造函数写法,自动调用,只会调用一次
与类名相同,没有返回值,可以有多个参数,可以发生重载,不写void
构造函数由编译器自动调用,不是手动,而且只会调用一次
析构函数
与类名相同,类名前面加一个符号"~",也没有返回值,不写void,不可以有参数(不能发生重载),只会调用一次
// 类和对象.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h"
#include <iostream>
using namespace std; //构造函数和析构函数
class Person {
public:
//构造函数写法,自动调用,只会调用一次
//与类名相同,没有返回值,可以有多个参数,可以发生重载,不写void
//构造函数由编译器自动调用,不是手动,而且只会调用一次
Person(int a) {//里面是可以传参数进来的
cout << "构造函数" << endl;
};
//析构函数
//与类名相同,类名前面加一个符号"~",也没有返回值,不写void,不可以有参数(不能发生重载),只会调用一次
~Person()
{
cout << "析构函数" << endl;
}
};
int main() {
Person p1();//默认是会调用构造函数和析构函数的,是系统提供的两个空实现的函数
}

构造函数分类:
有参无参来分:
无参构造函数,有参构造函数
类型来分:
普通构造函数,拷贝构造函数
//分类
//按照参数进行分类
/*
按照参数进行分类:无参构造函数(默认构造函数),有参构造函数
按照类型进行分类,普通构造函数和拷贝构造函数
构造函数和析构函数必须在public下才能调用到
*/ class Person {
public:
//构造函数
Person() {
//无参构造函数
}
Person(int a) {
//有参构造函数
cout << "有参构造函数" << endl;
}
Person(const Person &p) {
//拷贝构造函数,前面必须加const,拷贝过来的不能再修改了,固定的,就是说你拷贝过来了张三,不能再修改成张四(p.name=""),只能是原版张三
//传过来的&p是对象,p就是指针
age = p.age;//age被赋值
cout << "拷贝构造函数" << endl;
}
~Person()
{
cout << "析构函数" << endl;
} int age;
}; void test01() {
/*
Person p1(12);//进入的有参构造函数
p1.age = 13;
Person p2(p1);//这里开始拷贝p1 */
//显示法调用
Person p4 = Person();//有参构造函数
Person p5 = Person(p4);//这个是拷贝构造函数 Person();//匿名对象,匿名对象特定,如果编译器发现了是匿名对象的话,那么会在代码结束的时候释放这个对象,这个也是一个匿名函数
cout << "over" << endl;
//执行完over之后,发现有两个匿名函数,所以会释放两次这个对象,析构函数 } int main() {
test01();
}
默认构造函数调用不要加小括号,虽然说有参构造函数是由小括号的,但是调用的时候不要加上去
Person p1(),调用构造函数不能这样写,否则会被认为是函数的声明

//不能用拷贝构造函数,初始化匿名对象
//Person p4;//p4是匿名函数,不能再次初初始化了
Person p6 = Person(p4);//不能写成左值,会被认为是对Person p6的声明,如果写成右值可以,这个是可以的,会被当成是拷贝构造函数,是可以的
隐式类型转换:(不推荐这种写法,不直观)
Person p8 = 10;//这个相当于就是person p8=Person(10);
Person p9 = p6;//这个想当于是Person p9=Person(p6)
C++入门篇六的更多相关文章
- 【SSRS】入门篇(六) -- 分组和总计
原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...
- 【SSRS】入门篇(七) -- 报表发布
原文:[SSRS]入门篇(七) -- 报表发布 完成[SSRS]入门篇(六) -- 分组和总计后,第一份简单的报表就已完成了,下面把报表发布到报表服务器上. (实际情况下,报表展示给用户未必是用报表服 ...
- ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套
这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Java入门篇(六)——类和对象
写到这里终于写到了入门篇的最后一个知识点了.类和对象是Java中经常被提到的两个词汇,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语 ...
- .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用
写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...
- Linux入门篇(六)——Shell(二)
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 从零开始学习jQuery (一) 入门篇
本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些 ...
- JavaScript入门篇 编程练习
编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...
随机推荐
- 【zabbix教程系列】五、邮件报警设置(脚本方式)
本方式是使用外部邮箱账号发送报警邮件到指定邮箱. 好处是:此邮箱账号既能发送邮件,也能接收邮件,而且避免被当做垃圾邮件. 一.zabbix-server端安装mailx服务 [root@ltt01 ~ ...
- 失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案
微信页面input获取焦点,布局上移,失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案: setTimeout(function(){ let scrollHeight = docum ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- 【MySQL 读书笔记】当我们在执行该查询语句的时候我们在干什么
看了非常多 MySQL 相关的书籍和文章,没有看到过如此优秀的专栏.所以未来一段时间我会梳理读完该专栏的所学所得. 当我们在执行该查询语句的时候我们在干什么 mysql> select * fr ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- mysql8.0 Server 在Windows平台中的安装、初始化和远程访问设置
mysql8.0 server安装 1.下载mysql 8.0 可以到mysql官网下载 https://dev.mysql.com/downloads/mysql 或者如下地址 mysql-8.0. ...
- 台达wplsoft2.34指令表
常用: LD 载入 A 接点 LDI 载入 B 接点 AND 串联 A 接点 ANI 串联 B 接点 OR 并联 A 接点 ORI 并联 B 接点 ANB 串联回路方块 ORB 并联回路方块 MPS ...
- Redis读取出错,JSON序列化的问题
报错 org.springframework.web.util.NestedServletException: Request processing failed; nested exception ...
- JWT 加密
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- 常见的数据扩充(data augmentation)方法
G~L~M~R~S 一.data augmentation 常见的数据扩充(data augmentation)方法:文中图片均来自吴恩达教授的deeplearning.ai课程 1.Mirrorin ...