精华内容
下载资源
问答
  • C++声明一个学生

    千次阅读 多人点赞 2019-06-06 21:18:56
    //声明一个学生 数据成员有学号、姓名、年龄、体重;成员函数有输入学生各项信息, 输出各项信息;主函数中创建学生的对象,输入并显示学生的所有信息。 要求:姓名是字符数组或字符指针,并分别加以测试。 //...

    //声明一个学生类

    数据成员有学号、姓名、年龄、体重;成员函数有输入学生各项信息,
    输出各项信息;主函数中创建学生类的对象,输入并显示学生的所有信息。
    要求:姓名是字符数组或字符指针,并分别加以测试。

    //声明一个学生类;数据成员有学号、姓名、年龄、体重;成员函数有输入学生各项信息,
    //输出各项信息;主函数中创建学生类的对象,输入并显示学生的所有信息。
    //要求:姓名是字符数组或字符指针,并分别加以测试。
    #include<iostream>
    using namespace std;
    class student
    {
    	private:
    		int num;
    		char name[20];
    		int age;
    		int weight;
    	public:
    		void set();
    		void show();
    			
    };
    void student::set()
    {
    	cin>>num>>name>>age>>weight; 
    }
    void student::show()
    {
    	cout<<"学号:"<<num<<endl;
    	cout<<"姓名:"<<name<<endl;
    	cout<<"年龄:"<<age<<endl;
    	cout<<"体重:"<<weight<<endl; 
    } 
    int main()
    {
    		student s1;
    		s1.set();
    		s1.show();
    		return 0;	
    } 
    

    在这里插入图片描述

    展开全文
  • 通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。 友元的正确使用能提高程序的运行...
    友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。
    

    友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。

    友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。

    友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。

    友元函数 :

    友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:

    friend 类型 函数名(形式参数);
    友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
    一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
    友元函数的调用与一般函数的调用方式和原理一致。


    友元类 :
    友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
    当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
    friend class 类名;
    其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。

    1: #include <iostream>
    2: using namespace std;
    3:
    4: class Radius
    5: {
    6: friend class Circle; //声明Circle为Radius的友元类
    7: friend void Show_r(Radius &n); //声明Show_r为友元函数
    8: public:
    9: Radius(int x)
    10: {
    11: r = x;
    12: }
    13: ~Radius()
    14: {
    15: }
    16:
    17: private:
    18: int r;
    19: };
    20:
    21: void Show_r(Radius &n)
    22: {
    23: cout<<"圆的半径为: "<<n.r<<endl; //调用Radius对象的私有成员变量r
    24: }
    25:
    26: class Circle
    27: {
    28: public:
    29: Circle() {}
    30: ~Circle(){}
    31: double area(Radius a)
    32: {
    33: s = a.r * a.r * 3.1415926; //调用Radius对象的私有成员变量r
    34: return s;
    35: }
    36: private:
    37: double s;
    38: };
    39:
    40: int main(int argc, char *argv[])
    41: {
    42: Radius objRadius(9);
    43: Circle objCircle;
    44:
    45: Show_r( objRadius );
    46: cout<<"面积为:"<<objCircle.area(objRadius)<<endl;
    47:
    48: return 0;
    49: }
    被声明两个类的友元声明

    如果我们决定一个函数必须被声明为两个类的友元则友元声明如下

    1: class Window; // 只声明
    2:
    3: class Screen
    4:
    5: {
    6:
    7: friend bool is_equal( Screen &, Window & );
    8:
    9: // ...
    10:
    11: };
    12:
    13: class Window
    14:
    15: {
    16:
    17: friend bool is_equal( Screen &, Window & );
    18:
    19: // ...
    20:
    21: };
    作为一个类的函数又是另一个类的友元

    如果我们决定该函数必须作为一个类的成员函数并又是另一个类的友元,则成员函数声明和友元声明如下:

    1: class Window;
    2:
    3: class Screen
    4:
    5: {
    6:
    7: public:
    8:
    9: // copy 是类 Screen 的成员
    10:
    11: Screen& copy( Window & );
    12:
    13: // ...
    14:
    15: };
    16:
    17: class Window
    18:
    19: {
    20:
    21: // copy 是类 Window 的一个友元
    22:
    23: friend Screen& Screen::copy( Window & );
    24:
    25: // ...
    26:
    27: };
    只有当一个类的定义已经被看到时它的成员函数才能被声明为另一个类的友元。这并不总是能够做到的。

    例如如果Screen 类必须把Window 类的成员函数声明为友元,而Window类必须把Screen 类的成员函数声明为友元。该怎么办呢?在这种情况下可以把整个Window类声明为Screen 类的友元。

    例如:



    1: class Window;
    2:
    3: class Screen
    4:
    5: {
    6:
    7: friend class Window;
    8:
    9: // ...
    10:
    11: };
    Screen 类的非公有成员现在可以被Window 的每个成员函数访问。

    使用友元类时注意:
    (1) 友元关系不能被继承。
    (2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
    (3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明友元函数 :

    友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:

    friend 类型 函数名(形式参数);
    友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
    一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
    友元函数的调用与一般函数的调用方式和原理一致。


    友元类 :
    友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
    当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
    friend class 类名;
    其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。

    1: #include <iostream>
    2: using namespace std;
    3:
    4: class Radius
    5: {
    6: friend class Circle; //声明Circle为Radius的友元类
    7: friend void Show_r(Radius &n); //声明Show_r为友元函数
    8: public:
    9: Radius(int x)
    10: {
    11: r = x;
    12: }
    13: ~Radius()
    14: {
    15: }
    16:
    17: private:
    18: int r;
    19: };
    20:
    21: void Show_r(Radius &n)
    22: {
    23: cout<<"圆的半径为: "<<n.r<<endl; //调用Radius对象的私有成员变量r
    24: }
    25:
    26: class Circle
    27: {
    28: public:
    29: Circle() {}
    30: ~Circle(){}
    31: double area(Radius a)
    32: {
    33: s = a.r * a.r * 3.1415926; //调用Radius对象的私有成员变量r
    34: return s;
    35: }
    36: private:
    37: double s;
    38: };
    39:
    40: int main(int argc, char *argv[])
    41: {
    42: Radius objRadius(9);
    43: Circle objCircle;
    44:
    45: Show_r( objRadius );
    46: cout<<"面积为:"<<objCircle.area(objRadius)<<endl;
    47:
    48: return 0;
    49: }
    被声明两个类的友元声明

    如果我们决定一个函数必须被声明为两个类的友元则友元声明如下

    1: class Window; // 只声明
    2:
    3: class Screen
    4:
    5: {
    6:
    7: friend bool is_equal( Screen &, Window & );
    8:
    9: // ...
    10:
    11: };
    12:
    13: class Window
    14:
    15: {
    16:
    17: friend bool is_equal( Screen &, Window & );
    18:
    19: // ...
    20:
    21: };
    作为一个类的函数又是另一个类的友元

    如果我们决定该函数必须作为一个类的成员函数并又是另一个类的友元,则成员函数声明和友元声明如下:

    1: class Window;
    2:
    3: class Screen
    4:
    5: {
    6:
    7: public:
    8:
    9: // copy 是类 Screen 的成员
    10:
    11: Screen& copy( Window & );
    12:
    13: // ...
    14:
    15: };
    16:
    17: class Window
    18:
    19: {
    20:
    21: // copy 是类 Window 的一个友元
    22:
    23: friend Screen& Screen::copy( Window & );
    24:
    25: // ...
    26:
    27: };
    只有当一个类的定义已经被看到时它的成员函数才能被声明为另一个类的友元。这并不总是能够做到的。

    例如如果Screen 类必须把Window 类的成员函数声明为友元,而Window类必须把Screen 类的成员函数声明为友元。该怎么办呢?在这种情况下可以把整个Window类声明为Screen 类的友元。

    例如:



    1: class Window;
    2:
    3: class Screen
    4:
    5: {
    6:
    7: friend class Window;
    8:
    9: // ...
    10:
    11: };
    Screen 类的非公有成员现在可以被Window 的每个成员函数访问。

    使用友元类时注意:
    (1) 友元关系不能被继承。
    (2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
    (3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否
    展开全文
  • Java 声明一个图书

    千次阅读 2018-08-20 21:48:19
    声明一个图书,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数、记录图书的册数,在构造方法中利用此静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。...

    有点问题

    声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数、记录图书的册数,在构造方法中利用此静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。

    class Book{
        String Bname;
        static String Bnumber;
        float Bprice;
        private static int count=0;
        public Book(String Bname,float Bprice){
            count++;
            this.Bnumber="XYX-"+count;
        }
            public void sum(){
    
                System.out.println("图书总册数为"+count);
            }
    }
    
    public class BookTest{
        public static void main(String args[]){
            Book b[]={new Book("三国演义",55),new Book("水浒传",50),new Book("红楼梦",56),new Book("西游记",53)};
            b[0].sum();
        }
    }

    这里写图片描述

    展开全文
  • 编写一个Java应用程序,该程序包括3个类: 定义一个学生类,Student有姓名,学号,选学的课程列表 定义一个课程类:课程名称,课程分数 (1)初始化一个学生,选择了三门课程,并添加到学生的属性中 (2)实现统计...
    package exam2;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
    	编写一个Java应用程序,该程序包括3个类:
    	定义一个学生类,Student有姓名,学号,选学的课程列表
    	定义一个课程类:课程名称,课程分数 
    	(1)初始化一个学生,选择了三门课程,并添加到学生的属性中
    	(2)实现统计学生的总分功能
    	
    	1.正确编写2个类(5分)
    	2.统计学生的总分功能(5分)
     */
    public class Test {
    	public static void main(String[] args) {
    
    		List<Course> courses = new ArrayList<>();
    
    		// 初始化3门课程及分数
    		Course course1 = new Course("java", 80);
    		Course course2 = new Course("Math", 60);
    		Course course3 = new Course("English", 90);
    
    		// 课程对象添加到集合
    		courses.add(course1);
    		courses.add(course2);
    		courses.add(course3);
    
    		// 初始化学生对象
    		Student student = new Student("tom", "2015101", courses);
    		// student.setStuid("2015101");
    		// student.setStuname("tom");
    		// student.setCourses(courses);
    
    		// System.out.println(student);
    
    		// (2)实现统计 学生 的总分功能
    
    		int sum = sumScore(courses);
    		System.out.println(student.getStuname() + "学生总分:" + sum);
    
    	}
    
    	private static int sumScore(List<Course> courses) {
    		int sum = 0;
    		// 用课程对象,来获取课程的分数
    		for (Course course : courses) {
    			sum += course.getScore();
    		}
    		return sum;
    	}
    }
    package exam2;
    
    import java.util.List;
    
    public class Student {
    	// 定义一个学生类,Student有姓名,学号,选学的课程列表
    	private String stuname;
    	private String stuid;
    	private List<Course> courses;
    
    	public Student() {
    	}
    
    	public Student(String stuname, String stuid, List<Course> courses) {
    		this.stuname = stuname;
    		this.stuid = stuid;
    		this.courses = courses;
    	}
    
    	public String getStuname() {
    		return stuname;
    	}
    
    	public void setStuname(String stuname) {
    		this.stuname = stuname;
    	}
    
    	public String getStuid() {
    		return stuid;
    	}
    
    	public void setStuid(String stuid) {
    		this.stuid = stuid;
    	}
    
    	public List<Course> getCourses() {
    		return courses;
    	}
    
    	public void setCourses(List<Course> courses) {
    		this.courses = courses;
    	}
    
    	@Override
    	public String toString() {
    		return "学生姓名=" + stuname + ",学号=" + stuid + ", 课程=" + courses;
    	}
    
    }
    package exam2;
    
    public class Course {
    	//定义一个课程类:课程名称,课程分数
    	private String cname;
    	private int score;
    	public Course() {
    	}
    	public Course(String cname, int score) {
    		this.cname = cname;
    		this.score = score;
    	}
    	public String getCname() {
    		return cname;
    	}
    	public void setCname(String cname) {
    		this.cname = cname;
    	}
    	public int getScore() {
    		return score;
    	}
    	public void setScore(int score) {
    		this.score = score;
    	}
    	@Override
    	public String toString() {
    		return "[课程名称=" + cname + ", 课程分数=" + score + "]";
    	}
    	
    }
    

    /*
    运行:
    tom学生总分:230
    */



    展开全文
  • 如何声明一个类

    千次阅读 2012-07-13 10:01:58
    什么是:  是用户自定义的引用类型 的代码示例: class Pair {  public int X, Y; //公有变量名单词的首字母大写... //非公有变量名第一个单词的首字母小写(camelCase规则) } class Pair {
  • C++声明并定义一个学生信息

    千次阅读 2020-05-28 18:06:21
    声明并定义一个学生信息 #include <iostream> #include<cstring> using namespace std; class StInfo { public: int SID; char Name[20]; char Class[20]; char Phone[20]; void SetInfo(int a...
  • 代码1 import static java.lang.Math.PI;... * 定义一个 * 内部提供一个属性半径r * 提供两个方法计算面积和周长并输出 * 定义一个测试使用 * */ class Circle4 { double r; public Ci...
  • Java请按照一下要求设计一个学生Student,并进行测试。要求如下: (1)Student中包含姓名、成绩两个属性。 (2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。 (3)Student中...
  • 定义一个表示学生信息的Student,要求如下:(有关的编程)  (1)Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。 (2)Student带参数的构造...
  • C++中的——的定义和声明

    万次阅读 多人点赞 2018-08-23 10:49:04
    面向对象最大的特征就是提出了和对象的概念。在以面向对象的方式开发应用程序时,将...的定义 class/struct 类名 //头 {数据和方法的定义(可能含有类型成员)}; //体 1、使用class和struct的...
  • 5-9 声明一个图书

    千次阅读 2016-12-24 22:46:01
    5-9 声明一个图书,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数、记录图书的册数,在构造方法中利用此静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。...
  • c++中如何一个类批量声明多个对象

    千次阅读 2017-06-06 10:22:26
  • 在A项目上添加引用,比如你想调用B项目的一些或方法,在A项目上右键--&gt;添加引用(add reference) 选择解决方案,再选择项目,找到你所要的项目程序中使用using B这样就可以使用B中的和方法了.祝你成功!...
  • 例 9.14 声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。 代码块: #include &amp;lt;iostream&amp;gt; using namespace std; template &amp;lt;class numtype&...
  • template class List{ struct Node{}; ... class const_iterator{}; class iterator:public const_iterator{}; ... }; struct Node{ Object data; ... }; 这样定义出现了错误,但不知如何解决。...
  • 定义一个(Circle)

    万次阅读 2017-10-24 18:44:57
    – 定义一个(Circle),其所在的包为bzu.info.software;定义一个圆柱Cylinder,其所在的包为bzu.info.com;定义一个主类A,其所在的包也为bzu.info.com,在A中生成一个Cylinder对象,并输出其体积。编译并...
  • c++模板类声明和定义的问题

    千次阅读 2019-08-18 21:38:39
    这里在学习的过程中遇到的一些问题,比较简单,但还是记下来,以免下次遇到这个...使用泛型编程简单来说就是能让你把一些相同的代码用指定的去替换它,算是程序员找到的一个偷懒的方法吧。 模板模板的概念 一个...
  • 请按照以下要求设计一个学生 Student,并进行测试。 要求如下: Student 中包含姓名、成绩两个属性 分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值. Student 中定义一个无参...
  • Java之路:声明与定义

    万次阅读 多人点赞 2018-12-03 21:01:15
    声明 在使用之前,必须先声明它,然后才可以声明变量,并创建对象。 类声明的语法如下: [标识符] class 名称 { //的成员变量 //的方法 } 在上面的语法格式中,[标识符] 可以是public、private...
  • 题目:编写一个学生students,该成员变量包括学号no、姓名name、性别sex、和年纪age,该成员方法有getNo(),getName(),getSex(),getAge()和setAge().添加构造方法为所有变量赋初值,构造方法的四种格式: 程序...
  • package lianxi; public interface jiekou { public static final double PI = 3.1415926; public double area(); } package lianxi;...public class shixian implements jiekou { ... public s...
  • 设计一个简单的学生信息

    千次阅读 2020-10-26 12:32:27
    本关任务:声明并定义一个学生信息。 二、相关知识 为了完成本关任务,你需要掌握声明和定义。 在现实世界中,经常有属于同一的对象。例如,你的自行车只是世界上很多自行车中的一辆。在面向对象软件中,...
  • 头文件与声明

    千次阅读 2018-03-21 12:33:21
    我们在开始学习C++时,就应该养成规范大气的编程习惯,头文件(header)的布局就是其中很重要的一个点。我们需要知道头文件中的防卫式声明。#ifndef __COMPLEX__ #define __COMPLEX__ //前置声明(forward declarations...
  • /*定义一个表示学生信息的Student,要求如下: (1)Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。 (2)Student带参数的构造方法: 在...
  • //employee.h 这个程序包括一个empoyee.h头文件和一个.cpp文件 #ifndef EMPLOYEE_H_ #define EMPLOYEE_H_ #include using namespace std; class Employee{ char* name; //定义了一个指向字符的指针变量name char* ...
  • cpp————声明 定义 实现

    千次阅读 2017-02-10 15:56:13
    是c++引入的核心数据类型,是对数据和方法的封装,地位上与内置类型(复合类型)相同,只是种自定义数据类型 声明 声明,又称的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道...
  • 声明一个图书,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数、记录图书的总册数,在构造方法中利用些静态变量为对象的编号赋值,在主方法中定义数组对象,并求出总册数
  • public class A{public A(){} //构造1public A(int i){} //构造2public A(int i,int i){} //构造3public A(float f){} //构造4}直接声明即可,但要求参数的个数,或者类型不一样!...
  • c++中模板_模板的声明和定义

    千次阅读 2017-11-17 11:24:18
    一、函数模板用法 1.1申明和定义 Ø 在函数申明和定义前面,加一个模板template<classT, classC>就行,其余正常定义和申明 ...即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板 1....
  • 在 VS2010中报错如下:  报错原因:  这不是不兼容,是重复声明了,就是头文件互相包含了。  解决方法:  删掉该.cpp中多余的声明的.h头文件即可。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,762,790
精华内容 705,116
关键字:

怎么声明一个类